# for test

from msim import *

#print instructions['add16'][2](['23', 3, 3, 't'])
asm_text = """
loop: adD16 w1, w3, w6
org 0x19
l: ;sdfjoie
loop2:
subb64 u0, u3
call loop;wejoiwej;
"""


pp = Msim(asm_text)
pp.proc_asm()
print pp.labels   
pp.list_asm()

pp.grs.write_gr64(4, 2)
pp.grs.write_gr64(3, 1)
pp.add64(['u3', 'u2', 'u1'])
print pp.grs.read_gr64(3)
pp.sub64(['u3', 'u2', 'u1'])
print pp.grs.read_gr64(3)
pp.addc64(['u3', 'u2', 'u1'])
print pp.grs.read_gr64(3)
pp.subb64(['u3', 'u2', 'u1'])
print pp.grs.read_gr64(3)


print "lgjdflgj", 23, 234234
pp.grs.write_gr32(4, 2)
pp.grs.write_gr32(3, 1)
pp.add32(['u3', 'u2', 'u1'])
print pp.grs.read_gr32(3)
pp.sub32(['u3', 'u2', 'u1'])
print pp.grs.read_gr32(3)
pp.addc32(['u3', 'u2', 'u1'])
print pp.grs.read_gr32(3)
pp.subb32(['u3', 'u2', 'u1'])
print pp.grs.read_gr32(3)

pp.grs.write_gr16(0xffff, 2)
pp.grs.write_gr16(0x2, 1)
pp.add16(['u3', 'u2', 'u1'])
print pp.srs.getCCR_C()
print pp.grs.read_gr16(3)
pp.sub16(['u3', 'u2', 'u1'])
print pp.grs.read_gr16(3)
pp.addc16(['u3', 'u2', 'u1'])
print pp.grs.read_gr16(3)
pp.subb16(['u3', 'u2', 'u1'])
print pp.grs.read_gr16(3)










pp.grs.write_gr64(4, 2)
pp.grs.write_gr64(3, 3)
pp.add64d(['u3', 'u2'])
print pp.grs.read_gr64(3)
pp.grs.write_gr64(3, 2)
pp.grs.write_gr64(4, 3)
pp.sub64d(['u3', 'u2'])
print pp.grs.read_gr64(3)
pp.grs.write_gr64(4, 2)
pp.grs.write_gr64(3, 3)
pp.addc64d(['u3', 'u2'])
print pp.grs.read_gr64(3)
pp.grs.write_gr64(3, 2)
pp.grs.write_gr64(4, 3)
pp.subb64d(['u3', 'u2'])
print pp.grs.read_gr64(3)

pp.grs.write_gr32(4, 2)
pp.grs.write_gr32(3, 3)
pp.add32d(['u3', 'u2'])
print pp.grs.read_gr32(3)
pp.grs.write_gr32(3, 2)
pp.grs.write_gr32(4, 3)
pp.sub32d(['u3', 'u2'])
print pp.grs.read_gr32(3)
pp.grs.write_gr32(4, 2)
pp.grs.write_gr32(3, 3)
pp.addc32d(['u3', 'u2'])
print pp.grs.read_gr32(3)
pp.grs.write_gr32(3, 2)
pp.grs.write_gr32(4, 3)
pp.subb32d(['u3', 'u2'])
print pp.grs.read_gr32(3)

pp.grs.write_gr16(4, 2)
pp.grs.write_gr16(3, 3)
pp.add16d(['u3', 'u2'])
print pp.grs.read_gr16(3)
pp.grs.write_gr16(3, 2)
pp.grs.write_gr16(4, 3)
pp.sub16d(['u3', 'u2'])
print pp.grs.read_gr16(3)
pp.grs.write_gr16(4, 2)
pp.grs.write_gr16(3, 3)
pp.addc16d(['u3', 'u2'])
print pp.grs.read_gr16(3)
pp.grs.write_gr16(3, 2)
pp.grs.write_gr16(4, 3)
pp.subb16d(['u3', 'u2'])
print pp.grs.read_gr16(3)

pp.grs.write_gr16(4, 3)
print pp.grs.read_gr16(3)
pp.st8(['v3',15])
pp.ld8(['v3', 15])
print pp.grs.read_gr16(3)
pp.jmp16(['v3'])